package ejb.dao.usuarios;

import ejb.dao.estagio.Estagio;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

/**
 *
 * @author Guilherme Silva
 * @author Pedro Siqueira
 */
@Entity
@Table(name = "tb_estagiario")
public class Estagiario extends Usuario implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String curso;
    private String unidadeSetorial;
    private int semestre;
    private String rga;
    private String cpf;
    private String rg;
    private String orgaoExpedidor;
    private String nacionalidade;
    private String rua;
    private int nRua;
    private String bairro;
    private String cep;
    private String cidade;
    private String uf;
    private String telefone;
    private String telefoneRecado;
    private String email;
    @OneToOne
    private Estagio estagio;

    public Estagiario() {
    }

    public Estagiario(Long id, String curso, String unidadeSetorial, int semestre, String rga, String cpf, String rg, String orgaoExpedidor, String nacionalidade, String rua, int nRua, String bairro, String cep, String cidade, String uf, String telefone, String telefoneRecado, String email, Estagio estagio, String login, String senha, String nome) {
        super(login, senha, nome);
        this.id = id;
        this.curso = curso;
        this.unidadeSetorial = unidadeSetorial;
        this.semestre = semestre;
        this.rga = rga;
        this.cpf = cpf;
        this.rg = rg;
        this.orgaoExpedidor = orgaoExpedidor;
        this.nacionalidade = nacionalidade;
        this.rua = rua;
        this.nRua = nRua;
        this.bairro = bairro;
        this.cep = cep;
        this.cidade = cidade;
        this.uf = uf;
        this.telefone = telefone;
        this.telefoneRecado = telefoneRecado;
        this.email = email;
        this.estagio = estagio;
    }

    public Estagiario(Long id, String curso, String unidadeSetorial, int semestre, String rga, String cpf, String rg, String orgaoExpedidor, String nacionalidade, String rua, int nRua, String bairro, String cep, String cidade, String uf, String telefone, String telefoneRecado, String email, Estagio estagio) {
        this.id = id;
        this.curso = curso;
        this.unidadeSetorial = unidadeSetorial;
        this.semestre = semestre;
        this.rga = rga;
        this.cpf = cpf;
        this.rg = rg;
        this.orgaoExpedidor = orgaoExpedidor;
        this.nacionalidade = nacionalidade;
        this.rua = rua;
        this.nRua = nRua;
        this.bairro = bairro;
        this.cep = cep;
        this.cidade = cidade;
        this.uf = uf;
        this.telefone = telefone;
        this.telefoneRecado = telefoneRecado;
        this.email = email;
        this.estagio = estagio;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getCurso() {
        return curso;
    }

    public void setCurso(String curso) {
        this.curso = curso;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Estagio getEstagio() {
        return estagio;
    }

    public void setEstagio(Estagio estagio) {
        this.estagio = estagio;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public int getnRua() {
        return nRua;
    }

    public void setnRua(int nRua) {
        this.nRua = nRua;
    }

    public String getNacionalidade() {
        return nacionalidade;
    }

    public void setNacionalidade(String nacionalidade) {
        this.nacionalidade = nacionalidade;
    }

    public String getOrgaoExpedidor() {
        return orgaoExpedidor;
    }

    public void setOrgaoExpedidor(String orgaoExpedidor) {
        this.orgaoExpedidor = orgaoExpedidor;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getRga() {
        return rga;
    }

    public void setRga(String rga) {
        this.rga = rga;
    }

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }

    public int getSemestre() {
        return semestre;
    }

    public void setSemestre(int semestre) {
        this.semestre = semestre;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getTelefoneRecado() {
        return telefoneRecado;
    }

    public void setTelefoneRecado(String telefoneRecado) {
        this.telefoneRecado = telefoneRecado;
    }

    public String getUf() {
        return uf;
    }

    public void setUf(String uf) {
        this.uf = uf;
    }

    public String getUnidadeSetorial() {
        return unidadeSetorial;
    }

    public void setUnidadeSetorial(String unidadeSetorial) {
        this.unidadeSetorial = unidadeSetorial;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Estagiario other = (Estagiario) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        if ((this.curso == null) ? (other.curso != null) : !this.curso.equals(other.curso)) {
            return false;
        }
        if ((this.unidadeSetorial == null) ? (other.unidadeSetorial != null) : !this.unidadeSetorial.equals(other.unidadeSetorial)) {
            return false;
        }
        if (this.semestre != other.semestre) {
            return false;
        }
        if ((this.rga == null) ? (other.rga != null) : !this.rga.equals(other.rga)) {
            return false;
        }
        if ((this.cpf == null) ? (other.cpf != null) : !this.cpf.equals(other.cpf)) {
            return false;
        }
        if ((this.rg == null) ? (other.rg != null) : !this.rg.equals(other.rg)) {
            return false;
        }
        if ((this.orgaoExpedidor == null) ? (other.orgaoExpedidor != null) : !this.orgaoExpedidor.equals(other.orgaoExpedidor)) {
            return false;
        }
        if ((this.nacionalidade == null) ? (other.nacionalidade != null) : !this.nacionalidade.equals(other.nacionalidade)) {
            return false;
        }
        if ((this.rua == null) ? (other.rua != null) : !this.rua.equals(other.rua)) {
            return false;
        }
        if (this.nRua != other.nRua) {
            return false;
        }
        if ((this.bairro == null) ? (other.bairro != null) : !this.bairro.equals(other.bairro)) {
            return false;
        }
        if ((this.cep == null) ? (other.cep != null) : !this.cep.equals(other.cep)) {
            return false;
        }
        if ((this.cidade == null) ? (other.cidade != null) : !this.cidade.equals(other.cidade)) {
            return false;
        }
        if ((this.uf == null) ? (other.uf != null) : !this.uf.equals(other.uf)) {
            return false;
        }
        if ((this.telefone == null) ? (other.telefone != null) : !this.telefone.equals(other.telefone)) {
            return false;
        }
        if ((this.telefoneRecado == null) ? (other.telefoneRecado != null) : !this.telefoneRecado.equals(other.telefoneRecado)) {
            return false;
        }
        if ((this.email == null) ? (other.email != null) : !this.email.equals(other.email)) {
            return false;
        }
        if (this.estagio != other.estagio && (this.estagio == null || !this.estagio.equals(other.estagio))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 79 * hash + (this.id != null ? this.id.hashCode() : 0);
        hash = 79 * hash + (this.curso != null ? this.curso.hashCode() : 0);
        hash = 79 * hash + (this.unidadeSetorial != null ? this.unidadeSetorial.hashCode() : 0);
        hash = 79 * hash + this.semestre;
        hash = 79 * hash + (this.rga != null ? this.rga.hashCode() : 0);
        hash = 79 * hash + (this.cpf != null ? this.cpf.hashCode() : 0);
        hash = 79 * hash + (this.rg != null ? this.rg.hashCode() : 0);
        hash = 79 * hash + (this.orgaoExpedidor != null ? this.orgaoExpedidor.hashCode() : 0);
        hash = 79 * hash + (this.nacionalidade != null ? this.nacionalidade.hashCode() : 0);
        hash = 79 * hash + (this.rua != null ? this.rua.hashCode() : 0);
        hash = 79 * hash + this.nRua;
        hash = 79 * hash + (this.bairro != null ? this.bairro.hashCode() : 0);
        hash = 79 * hash + (this.cep != null ? this.cep.hashCode() : 0);
        hash = 79 * hash + (this.cidade != null ? this.cidade.hashCode() : 0);
        hash = 79 * hash + (this.uf != null ? this.uf.hashCode() : 0);
        hash = 79 * hash + (this.telefone != null ? this.telefone.hashCode() : 0);
        hash = 79 * hash + (this.telefoneRecado != null ? this.telefoneRecado.hashCode() : 0);
        hash = 79 * hash + (this.email != null ? this.email.hashCode() : 0);
        hash = 79 * hash + (this.estagio != null ? this.estagio.hashCode() : 0);
        return hash;
    }


}
